<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>RVM : Compiler Optimization Comparison Chart</title>
        <link rel="stylesheet" href="styles/site.css" type="text/css" />
        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>

    <body>
        <div id="page">
            <div id="main">
                <div id="main-header" class="pageSectionHeader">
                    <h1 id="title-heading" class="pagetitle">
                                                <span id="title-text">
                            RVM : Compiler Optimization Comparison Chart
                        </span>
                    </h1>

                    <div class="page-metadata">
                        <p>This page last changed on Mar 25, 2008 by <font color="#0050B2">ianrogers</font>.</p>
                    </div>
                </div>

                <div id="content" class="view">
                    <div id="main-content" class="wiki-content group">
                    <p>This section presents a comparison chart of the Jikes RVM against the following JVMs.</p>
<ul>
	<li><a href="http://publib.boulder.ibm.com/infocenter/javasdk/v6r0/topic/com.ibm.java.doc.diagnostics.60/html/jit_optimize.html" class="external-link" rel="nofollow">IBM JDK v6 r0</a></li>
</ul>


<h2 id="CompilerOptimizationComparisonChart-Inlining">Inlining</h2>

<div class="table-wrap"><table class="confluenceTable"><tbody>
<tr>
<th class="confluenceTh"><p> Category </p></th>
<th class="confluenceTh"><p> Optimization </p></th>
<th class="confluenceTh"><p> RVM </p></th>
<th class="confluenceTh"><p> IBM JDK v6 r0 </p></th>
</tr>
<tr>
<th class="confluenceTh"><p> Inlining </p></th>
<td class="confluenceTd"><p> Trivial Inlining </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> </p></th>
<td class="confluenceTd"><p> Call graph inlining </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> </p></th>
<td class="confluenceTd"><p> Tail recursion elimination </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> </p></th>
<td class="confluenceTd"><p> Virtual call guard optimizations </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> </p></th>
<td class="confluenceTd"><p> </p></td>
<td class="confluenceTd"><p> </p></td>
<td class="confluenceTd"><p> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> Local optimizations </p></th>
<td class="confluenceTd"><p> Local data flow analyses and optimization </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> </p></th>
<td class="confluenceTd"><p> Register usage optimization </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> </p></th>
<td class="confluenceTd"><p> Simplification of Java idioms </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> </p></th>
<td class="confluenceTd"><p> </p></td>
<td class="confluenceTd"><p> </p></td>
<td class="confluenceTd"><p> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> Control flow optimizations </p></th>
<td class="confluenceTd"><p> Code reordering, splitting and removal </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> </p></th>
<td class="confluenceTd"><p> Loop reduction and inversion </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-cross" src="s/en_GB/3126/15/_/images/icons/emoticons/error.png" data-emoticon-name="cross" alt="(error)"/> </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> </p></th>
<td class="confluenceTd"><p> Loop invariant code motion </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> (disabled) </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> </p></th>
<td class="confluenceTd"><p> Loop striding </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-cross" src="s/en_GB/3126/15/_/images/icons/emoticons/error.png" data-emoticon-name="cross" alt="(error)"/> </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> </p></th>
<td class="confluenceTd"><p> Loop unrolling </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> (disabled) </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> </p></th>
<td class="confluenceTd"><p> Loop peeling </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-cross" src="s/en_GB/3126/15/_/images/icons/emoticons/error.png" data-emoticon-name="cross" alt="(error)"/> </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> </p></th>
<td class="confluenceTd"><p> Loop versioning </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> (disabled) </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> </p></th>
<td class="confluenceTd"><p> Loop specialization </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-cross" src="s/en_GB/3126/15/_/images/icons/emoticons/error.png" data-emoticon-name="cross" alt="(error)"/> </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> </p></th>
<td class="confluenceTd"><p> Exception directed optimization </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-cross" src="s/en_GB/3126/15/_/images/icons/emoticons/error.png" data-emoticon-name="cross" alt="(error)"/> </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> </p></th>
<td class="confluenceTd"><p> Switch analysis </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> </p></th>
<td class="confluenceTd"><p> </p></td>
<td class="confluenceTd"><p> </p></td>
<td class="confluenceTd"><p> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> Global optimizations </p></th>
<td class="confluenceTd"><p> Global flow analyses and optimization </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-question" src="s/en_GB/3126/15/_/images/icons/emoticons/help_16.png" data-emoticon-name="question" alt="(question)"/> </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> </p></th>
<td class="confluenceTd"><p> Partial redundancy elimination </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> (disabled) </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> </p></th>
<td class="confluenceTd"><p> Escape analysis </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> </p></th>
<td class="confluenceTd"><p> GC and memory allocation optimizations </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-cross" src="s/en_GB/3126/15/_/images/icons/emoticons/error.png" data-emoticon-name="cross" alt="(error)"/> </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> </p></th>
<td class="confluenceTd"><p> Synchronization optimizations </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> </p></th>
<td class="confluenceTd"><p> </p></td>
<td class="confluenceTd"><p> </p></td>
<td class="confluenceTd"><p> </p></td>
</tr>
<tr>
<th class="confluenceTh"><p> Native code generation </p></th>
<td class="confluenceTd"><p> Small optimization based on architecture characteristics </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-question" src="s/en_GB/3126/15/_/images/icons/emoticons/help_16.png" data-emoticon-name="question" alt="(question)"/> </p></td>
<td class="confluenceTd"><p> <img class="emoticon emoticon-tick" src="s/en_GB/3126/15/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"/> </p></td>
</tr>
</tbody></table></div>
                    </div>

                    
                 
                </div>             </div> 
            <div id="footer" style="background: url(http://docs.codehaus.org/images/border/border_bottom.gif) repeat-x;">
                <p><small>Document generated by Confluence on Feb 17, 2012 10:24</small></p>
            </div>
        </div>     </body>
</html>
